package main

import (
	"fmt"
	"go-tour/pkg/reflect_util"
)

// 定义结构体Person
type Person struct {
	Name   string
	Age    int
	Salary float64
}

func main() {
	new()
}
func new() {
	person := &Person{}
	fmt.Println(person) // 修改前 { 0}
	reflect_util.ReflectSetFieldValue(person, "name", "gerrylon")
	reflect_util.ReflectSetFieldValue(person, "Age", 26)
	reflect_util.ReflectSetFieldValue(person, "Salary", 5000.50)

	fmt.Println(person) // 修改后 {gerrylon 26}
}

//func old(){
//	person := Person{}
//	fmt.Println(person)                    // 修改前 { 0}
//	pp := reflect.ValueOf(person)         // 取得struct变量的指针
//	field := pp.Elem().FieldByName("Name") //获取指定Field
//	reflect_util.ReflectSetFieldValue(field, "gerrylon")
//
//	field = pp.Elem().FieldByName("Age")
//	reflect_util.ReflectSetFieldValue(field, 26)
//	field = pp.Elem().FieldByName("Salary")
//	reflect_util.ReflectSetFieldValue(field, 5000.50)
//
//	fmt.Println(person) // 修改后 {gerrylon 26}
//}
